Grundlage für die Datenbankunabhängigkeit (Informix/Postgres) von SuperX-Abfragen sind die FreeMarker Makros SQL Lingua Franca (s.o.).
Zusätzlich sollte man auf Folgendes achten.
entwickeln mit Postgres
Da Postgres bei einigen Dingen strenger ist, sollte man mit Postgres entwickeln, wo möglich.
einfache Hochkommata haben Vorrang
SELECT '${eineKostenart.id}'::char(10), sum(betrag)
FROM tmp_busa ?
Informix würde auch "${eineKostenart.id}" verstehen, Postgres würde dies jedoch für einen festen Spaltennamen halten und meckern, dass es keine solche Spalte gibt.
Casting benutzen
Postgres muss öfter mittels Casting über den Datentyp informiert werden.
insert into ?
select 'Summe'::char(100), .... from ? group by 1,2,3;
Informix braucht das nicht unbedingt, Postgres meldet bei fehlendem Casting gerne:
ERROR: Unable to identify an ordering operator '<' for type '"unknown"'
Use an explicit ordering operator or modify the query
Andersherum ist es wichtig, bei unions auch null zu casten.
select x,y,z from test
union
select x, null::char(10),z from test2
Postgres kommt ohne Casting klar, weil es aus dem ersten Select den Datentyp erkennt. Informix meldet demgegenüber nur Syntax Error.
![]() |
![]() ![]() |
Seite 37 / 102 Letzter Update: 17.06.2008 Impressum |